home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / f1 / hpn.arj / NIEVE.BAS < prev    next >
Encoding:
BASIC Source File  |  1992-06-14  |  3.7 KB  |  117 lines

  1. DIM SHARED pd AS INTEGER, P AS INTEGER, a AS INTEGER, d AS INTEGER, n0 AS INTEGER, n1 AS INTEGER
  2. DIM SHARED x1 AS SINGLE, y1 AS SINGLE, l AS SINGLE, pi AS SINGLE, scale AS SINGLE
  3. DIM SHARED l0(10, 10) AS SINGLE, a0(10) AS INTEGER, a1(10) AS INTEGER, a2(10) AS INTEGER
  4. DIM SHARED di(10) AS INTEGER, df(10) AS INTEGER, nd(10) AS INTEGER, di0(10) AS INTEGER, df0(10) AS INTEGER
  5. DIM SHARED nv(10) AS INTEGER, sum(10) AS INTEGER, rp(10) AS INTEGER
  6. DIM SHARED x(10) AS INTEGER, y(10) AS INTEGER, s AS STRING * 1
  7. DIM SHARED x0(10) AS INTEGER, y0(10) AS INTEGER, c(50) AS INTEGER, d(20, 10) AS INTEGER
  8. DECLARE SUB dibuja (P AS INTEGER)
  9. DECLARE SUB dibujo ()
  10. DECLARE SUB pinta ()
  11. dibujo
  12. '-------------- Fig. 1 --------------
  13. DATA 12,-90,90,0,3,-1, 3,5 
  14. DATA 490, 90,180,80,0
  15. DATA 0,2,2,0,2,1,2,1,1,0,0,2
  16. DATA 350,58.3,9.71,1.62,0.27
  17. '-------------- Fig. 2 --------------
  18. DATA 4,120,-60,0,2,-1, 5,7 
  19. DATA 490,360,395,200,1
  20. DATA 0,1,0,1
  21. DATA 380,127,42.2,14.1,4.7,1.56,.52
  22. '-------------- Fig. 3 --------------
  23. DATA 5, 90, -90,0,3, - 1, 4,6 
  24. DATA 390, 160,575,115,1
  25. DATA 1,0,1,1,0
  26. DATA 200,66.66,22.22,7.4,2.47,.82
  27. '-------------- Fig. 4 -------------- 
  28. DATA 7, -60,120,-60,5, -1, 4,6 
  29. DATA 350, 150,130,330,0
  30. DATA 0,1,3,3,3,3,1
  31. DATA 100,33.33,11.11,3.72,1.23,.5
  32. '-------------- Fig. 5 -------------- 
  33. DATA 8,-90,90,0,3,-1, 3,5 
  34. DATA 430,130,370,320,0
  35. DATA 0,1,0,0,2,1,1,0
  36. DATA 250,62.5,15.65,3.91,.97
  37. '-------------- Fig. 6 --------------
  38. DATA 4,120,60,-120,2,-1, 5,7 
  39. DATA 490,360,610,430,1
  40. DATA 0,1,3,1
  41. DATA 380,127,42.2,14.1,4.7,1.56,.52
  42. END
  43.  
  44.                           
  45.  
  46. SUB dibuja (i AS INTEGER)
  47. a = (a + a0(pd) * (P = 0) + a1(pd) * (P = 1) + a2(pd) * (P = 3)) MOD 360
  48. x1 = x1 + l * COS(a * pi)
  49. y1 = y1 + l * SIN(a * pi)
  50. LINE -(x1, y1), d
  51. END SUB
  52.  
  53. SUB dibujo
  54. pd = 6: dd = pd
  55. CLS
  56. FOR i = 1 TO pd
  57. READ rp(i), a0(i), a1(i), a2(i), nv(i), di(i), df(i), nd(i)
  58. READ x(i), y(i), x0(i), y0(i), di0(i)
  59. FOR j = 1 TO rp(i): READ d(j - 1, i): NEXT j
  60. FOR j = 1 TO nd(i): READ l0(j, i): NEXT j
  61. NEXT i
  62. SCREEN 12
  63. DO
  64. LOCATE 2, 1: PRINT "¿Te gustan estos dibujos? ¿Sabrías cómo se generan?"
  65. LOCATE 3, 1: PRINT "Elije el que desees ... y te lo explicaremos gráficamente."
  66. LOCATE 30, 56: PRINT "Pulsa 'F' para acabar."
  67. pi = 3.141592659# / 180
  68. scale = 1 / 2.5
  69. dd = 6
  70. FOR i = 40 TO 480 STEP 438 / 2: LINE (0, i)-(640, i): NEXT i
  71. FOR j = 0 TO 640 STEP 639 / 3: LINE (j, 40)-(j, 480): NEXT j
  72. FOR i = 0 TO 2: FOR j = 0 TO 1: LOCATE j * 14 + 4, i * 27 + 2: PRINT 3 * j + i + 1: NEXT j, i
  73. FOR pd = 1 TO dd: x1 = x0(pd): y1 = y0(pd): n0 = di0(pd): n1 = n0: pinta: NEXT pd
  74. DEF SEG = 0
  75. POKE &H417, PEEK(&H417) OR &H20
  76. DO
  77. s = INPUT$(1)
  78. LOOP WHILE INSTR("123456Ff", s) = 0
  79. CLS : scale = 1: pd = VAL(s): IF pd = 0 THEN END ELSE x1 = x(pd): y1 = y(pd): LOCATE 1, 1: PRINT "Vas a ver cómo se dibuja 'paso a paso'.": PRINT "Pulsa cualquier tecla para continuar...": n0 = -1: n1 = df(pd) - 1: pinta
  80. CLS
  81. dd = 1
  82. LOCATE 1, 1: PRINT "Se generan repitiendo un modelo base ,¿cuál?"
  83. LOCATE 2, 1: PRINT "¿Alguno en especial? Introduce el número de orden, entre '1' y  '"; nd(pd); "'"
  84. s = INPUT$(1): dd = VAL(s)
  85. DO WHILE dd > 0 AND nd(pd) >= dd
  86. CLS : x1 = x(pd): y1 = y(pd): LOCATE 1, 1: PRINT "Dibujo con nº de orden "; dd: PRINT "Pulsa cualquier tecla para continuar...": n0 = dd - 2: n1 = n0: pinta: dd = VAL(s)
  87. LOOP
  88. CLS
  89. LOOP
  90. END SUB
  91.  
  92. SUB pinta
  93. FOR n = n0 TO n1
  94. a = 0
  95. LINE (x1, y1)-(x1, y1)
  96. d = (n + 2) MOD 7 + 1
  97. l = l0(n + 2, pd) * scale
  98. FOR j = 0 TO nv(pd)
  99. FOR i = 0 TO n + 1: c(i) = 0: NEXT i
  100. i = 0
  101. DO
  102. P = d(c(i), pd)
  103. i = 0
  104. dibuja (c(i))
  105. IF "" <> INKEY$ THEN s = "": EXIT SUB
  106. c(i) = (c(i) + 1) MOD rp(pd)
  107.   DO WHILE c(i) = 0
  108.   i = i + 1
  109.   c(i) = (c(i) + 1) MOD rp(pd)
  110.   LOOP
  111. LOOP WHILE c(n + 1) = 0
  112. NEXT j
  113. IF scale = 1 THEN s = INPUT$(1)
  114. NEXT n
  115. END SUB
  116.  
  117.